#include <cstdio>
#include <cstring>

typedef long long ll;
const int N = 205, mod = 998244353;
int n, m, cnt, sum = 1, num[N];
ll ans = 1, f[N][N * N];

inline ll qpow(ll base, int exp) {
  ll res = 1;
  while (exp) {
    if (exp & 1) res = res * base % mod;
    base = base * base % mod;
    exp >>= 1;
  }
  return res;
}

int main() {
#ifndef ONLINE_JUDGE
#ifdef LOCAL
  freopen("testdata.in", "r", stdin);
  freopen("testdata.out", "w", stdout);
#else
  freopen("count.in", "r", stdin);
  freopen("count.out", "w", stdout);
#endif
#endif

  scanf("%d%d", &n, &m);
  for (int i = 2; i * i <= n; ++i) {
    if (n % i == 0) {
      ++cnt;
      while (n % i == 0) n /= i, ++num[cnt];
      sum *= num[cnt] + 1;
    }
  }
  if (n != 1) num[++cnt] = 1, sum <<= 1;
  for (int i = 1; i <= cnt; ++i) {
    memset(f, 0, sizeof(f));
    f[0][0] = 1;
    for (int j = 1; j <= m << 1; ++j)
      for (int k = 0; k <= num[i] * m; ++k) {
        for (int h = 0; h <= num[i]; ++h)
          if (k >= h) (f[j][k] += f[j - 1][k - h]) %= mod;
      }
    (ans *= f[m << 1][num[i] * m]) %= mod;
  }
  printf("%lld", (qpow(sum, m << 1) + ans) % mod * qpow(2, mod - 2) % mod);
  return 0;
}